class SPARQLQueryDispatcher { constructor( endpoint ) { this.endpoint = endpoint; } query( sparqlQuery ) { const fullUrl = this.endpoint + '?query=' + encodeURIComponent( sparqlQuery ); const headers = { 'Accept': 'application/sparql-results+json' }; return fetch( fullUrl, { headers } ).then( body => body.json() ); } } const endpointUrl = 'http://sparql.example/endpoint'; const sparqlQuery = `# cats SELECT ?cat ?catLabel WHERE { ?cat wdt:P31 wd:Q146. SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } } `; const queryDispatcher = new SPARQLQueryDispatcher( endpointUrl ); queryDispatcher.query( sparqlQuery ).then( console.log );